package vista.ventanas;

import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.MouseListener;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import eventos.EventoCancelar;

import vista.paneles.PanelAceptarCancelar;

@SuppressWarnings("serial")
public abstract class SubVentana extends JDialog{

	private PanelAceptarCancelar panelAceptarCancelar;
	private JPanel panelInformacion;
	private JPanel contentPanel;


	public SubVentana(Window ventanaPadre, String titulo, int altoVentana)
	{
		super(ventanaPadre);

		this.setTitle(titulo);
		this.setSize(ConstantesVista.ANCHO_DIALOGOS, altoVentana);
		this.setResizable(false);
		this.setModal(true);
		this.setLocationRelativeTo(null);
		this.getContentPane().setLayout(new BorderLayout());
		
		this.crearPanelContenedor();
		this.crearPanelInformacion();
		this.crearPanelAceptarCancelar();
	}
	
	private void crearPanelAceptarCancelar() 
	{
		this.panelAceptarCancelar = new PanelAceptarCancelar();
		
		this.panelAceptarCancelar.escucharEventosBotonCancelar(new EventoCancelar(this));
		this.contentPanel.add(this.panelAceptarCancelar, BorderLayout.SOUTH);
	}

	public void escucharEventosBotonCancelar(MouseListener controlador) {
		this.panelAceptarCancelar.escucharEventosBotonCancelar(controlador);
	}
	
	public void escucharEventosBotonAceptar(MouseListener controlador) {
		this.panelAceptarCancelar.escucharEventosBotonAceptar(controlador);
	}
		
	protected abstract void agregarComponentesPanelInformacion();
	
	protected JPanel getPanelDeInformacion()
	{
		return this.panelInformacion;
	}

	private void crearPanelContenedor()
	{
		this.contentPanel = new JPanel();

		this.contentPanel.setBorder(new EmptyBorder(ConstantesVista.PANEL_INFORMACION_MARGEN_VERTICAL, ConstantesVista.PANEL_INFORMACION_MARGEN_HORIZONTAL, ConstantesVista.PANEL_INFORMACION_MARGEN_VERTICAL, ConstantesVista.PANEL_INFORMACION_MARGEN_HORIZONTAL));
		this.contentPanel.setLayout(new BorderLayout());
		this.getContentPane().add(this.contentPanel, BorderLayout.CENTER);
	}
	
	private void crearPanelInformacion() 
	{
		this.panelInformacion = new JPanel();
			
		this.panelInformacion.setLayout(null);
		this.panelInformacion.setBorder(new EmptyBorder(ConstantesVista.PANEL_INFORMACION_MARGEN_VERTICAL, ConstantesVista.PANEL_INFORMACION_MARGEN_HORIZONTAL, ConstantesVista.PANEL_INFORMACION_MARGEN_VERTICAL, ConstantesVista.PANEL_INFORMACION_MARGEN_HORIZONTAL));
		
		this.contentPanel.add(this.panelInformacion, BorderLayout.CENTER);
		
		this.agregarComponentesPanelInformacion();
	}	
}
